package es.unileon.rnag.jgen.genes;
/**
 * Clase que representa un gen que puede tomar los valores 0 y 1. Implementa Gen<Boolean>
 * @author Abel Mayorga Gonz&aacute;lez
 * @author Sergio Fern&aacute;ndez Mart&iacute;nez
 * @version 1.0
 */
public class GenBit implements Gen<Boolean> {

	private boolean _valor;
	
	/**
	 * Constructor. Obtiene el valor 0 o 1 aleatoriamente
	 */
	public GenBit(){
		if(Math.random()<0.5f){
			_valor = true;
		} else {
			_valor = false;
		}
	}
	
	@Override
	public Boolean getValor() {
		return _valor;
	}

	@Override
	public boolean esValido(Boolean valor) {
		return true;
	}

	@Override
	public String getBitString() {
		if(_valor){
			return "1";
		} else {
			return "0";
		}
	}

	@Override
	public boolean asignarValor(String bits) {
		if(bits.length()==1){
			if(bits.charAt(0) == '1'){
				_valor = true;
				return true;
			} else if (bits.charAt(0) == '0'){
				_valor = false;
				return true;
			}
		}
		return false;
	}

	@Override
	public boolean asignarValor(Boolean valor) {
		this._valor = valor;
		return true;
	}

	@Override
	public Gen<Boolean> clonar() {
		GenBit nuevo = new GenBit();
		nuevo.asignarValor(_valor);
		return nuevo;
	}
}
